package MethodDemo;
/**方法的重载 ：在同一类中 方法名相同，参数列表不同，的方法叫做方法重载，与返回值、修饰符列表无关。
 *
 * 什么时候考虑方法重载：在同一类中，功能相似，可以考虑方法重载
 *
 * 注意：方法重载Overload不能随便使用，如果功能不相似，进行方法重载会导致方法功能无法区分
 * 什么时候需要考虑使用方法重载？
 * 			在同一个类当中，如果“功能1”和“功能2”它们的功能是相似的，
 * 			那么可以考虑将它们的方法名一致，这样代码既美观，又便于
 * 			后期的代码编写（容易记忆，方便使用）。
 *
 * 		什么时候代码会发生方法重载？
 * 			条件1：在同一个类当中
 * 			条件2：方法名相同
 * 			条件3：参数列表不同
 * 						参数的个数不同算不同
 * 						参数的类型不同算不同
 * 						参数的顺序不同算不同
 *
 * 			只要同时满足以上3个条件，那么我们可以认定方法和方法之间发生了
 * 			重载机制。
 *
 * 	注意：
 * 		不管代码怎么写，最终一定能让java编译器很好的区分开这两个方法。
 *
 * 		方法重载和方法的“返回值类型”无关。
 * 		方法重载和方法的“修饰符列表”无关。
 *
 *  优点： 1.格式清晰，不用重复命名
 * 		2.保证了方法的联系性
 * 		3.调用方法:自动去调用参数列表相同的方法
 *
 *  参数列表不同：1.参数个数不同算不同
 * 			 2.参数数据类型不同算不同
 * 			 3.参数顺序不同算不同
 * */
public class Demo03 {
    //个数不同算不同
    public static int sum(int a,int b){
        return a+b;
    }

    public static int sum(int a,int b,int c){
        return a+b+c;
    }

    public static int sum(int a,int b,int c,int d){
        return a+b+c+d;
    }
    //类型不同算不同
    public static double sum(double a,double b){
        return a+b;
    }
    //顺序不同算不同
    public static double sum(int a,double b){
        return a+b;
    }

    public static double sum(double a,int b){
        return a+b;
    }
}
